package com.huilian.iotbox.data.dao;

import com.huilian.iotbox.data.dto.MemberStoreBalanceDto;
import com.huilian.iotbox.data.po.MemberStoreBalance;
import com.huilian.iotbox.data.vo.MemberStoreBalanceVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface MemberStoreBalanceCommonDao {
    int insert(MemberStoreBalanceVo memberStoreBalance);

    MemberStoreBalanceDto queryMemberStoreBalance(@Param("merchantStoreId") Integer merchantStoreId, @Param("memberId") Long memberId);

    int updateOrderRecord(MemberStoreBalanceVo balanceByMerchantStoreId);

    MemberStoreBalanceVo findOneMemberStoreBalanceById(Long id);

    MemberStoreBalance findOneMemberStoreBalanceByCondition(MemberStoreBalanceDto memberStoreBalanceDto);

    int addMemberStoreBalance(@Param("rechargeNum") int rechargeNum, @Param("donateNum") int donateNum, @Param("memberStoreBalanceId") long memberStoreBalanceId, @Param("memberId") long memberId, @Param("userId") int userId, @Param("merchantStoreId") int merchantStoreId, @Param("versionId") int versionId);

    int reduceMemberStoreBalance(@Param("rechargeNum") int rechargeNum, @Param("donateNum") int donateNum, @Param("memberStoreBalanceId") long memberStoreBalanceId, @Param("memberId") long memberId, @Param("userId") int userId, @Param("merchantStoreId") int merchantStoreId, @Param("versionId") Integer versionId);

    List<MemberStoreBalanceVo> findMemberStoreBalanceByMemberId(MemberStoreBalanceDto memberStoreBalanceDto);

    int addMemberStoreMoneyBalance(MemberStoreBalance memberStoreBalance);

    int reduceMemberStoreChargeBalance(MemberStoreBalance memberStoreBalance);

    List<MemberStoreBalance> findAllByMemberId(Long memberId);

    int addMemberStoreIntegralBalance(@Param("integral") Integer integral, @Param("memberStoreBalanceId") Long memberStoreBalanceId, @Param("memberId") Long memberId, @Param("userId") Integer userId, @Param("merchantStoreId") Integer merchantStoreId, @Param("versionId") Integer versionId);

    int addMemberStoreLotteryBalance(@Param("lottery") Integer lottery, @Param("memberStoreBalanceId") long memberStoreBalanceId, @Param("memberId") long memberId, @Param("userId") Integer userId, @Param("merchantStoreId") Integer merchantStoreId, @Param("versionId") Integer versionId);

    int updateTotalPayById(MemberStoreBalance updateMemberStoreBalance);

    MemberStoreBalanceVo findMemberStoreBalanceByMerchantStoreId(MemberStoreBalanceDto memberStoreBalanceDto);

    MemberStoreBalanceVo queryMemberStoreBalanceVo(Integer merchantStoreId, Long memberId);

    MemberStoreBalanceVo findByMemberIdAndMerchantStoreId(MemberStoreBalanceDto memberStoreBalanceDto);

    Integer add(MemberStoreBalanceDto newBalance);

    Integer updateBalance(MemberStoreBalanceDto updateMemberStoreBalanceDto);
}
